We were using the wrong “maximal” model! This is a quick notebook to check what we see when we use the right maximal model to determine how many factors to extract.

7-9yo US Children, 2 characters

Maximal structure, oblimin rotation

convergence not obtained in GPFoblq. 1000 iterations used. A loading greater than abs(1) was detected.  Examine the loadings carefully.

Reduced structure, oblimin rotation

Alternative factor retention methods

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 


Very Simple Structure
Call: vss(x = x, n = n, rotate = rotate, diagonal = diagonal, fm = fm, 
    n.obs = n.obs, plot = plot, title = title, use = use, cor = cor)
VSS complexity 1 achieves a maximimum of 0.64  with  2  factors
VSS complexity 2 achieves a maximimum of 0.78  with  3  factors

The Velicer MAP achieves a minimum of 0.01  with  3  factors 
BIC achieves a minimum of  -2636.75  with  3  factors
Sample Size adjusted BIC achieves a minimum of  -549.78  with  5  factors

Statistics by number of factors 
  vss1 vss2    map dof chisq    prob sqresid  fit RMSEA   BIC SABIC complex
1 0.61 0.00 0.0207 740  1846 7.7e-96      48 0.61 0.091 -2093   251     1.0
2 0.64 0.77 0.0121 701  1171 3.8e-26      28 0.77 0.063 -2561  -340     1.3
3 0.57 0.78 0.0090 663   892 5.7e-09      22 0.82 0.048 -2637  -536     1.6
4 0.53 0.75 0.0096 626   803 1.9e-06      20 0.84 0.044 -2529  -545     1.9
5 0.52 0.73 0.0099 590   721 1.6e-04      18 0.85 0.041 -2419  -550     2.0
6 0.49 0.71 0.0107 555   652 2.7e-03      17 0.86 0.038 -2302  -544     2.1
7 0.50 0.71 0.0113 521   586 2.5e-02      16 0.87 0.034 -2187  -536     2.3
8 0.47 0.67 0.0121 488   527 1.1e-01      14 0.88 0.031 -2071  -525     2.4
  eChisq  SRMR eCRMS  eBIC
1   4475 0.118 0.121   536
2   1568 0.070 0.074 -2164
3    819 0.051 0.055 -2710
4    690 0.046 0.052 -2642
5    566 0.042 0.048 -2575
6    482 0.039 0.046 -2472
7    402 0.035 0.043 -2371
8    337 0.032 0.041 -2261

Clustering within reduced factor space

7-9yo US Children, 9 characters

Maximal structure, oblimin rotation

convergence not obtained in GPFoblq. 1000 iterations used. A loading greater than abs(1) was detected.  Examine the loadings carefully.

Reduced structure, oblimin rotation

Alternative factor retention methods

The estimated weights for the factor scores are probably incorrect.  Try a different factor extraction method.
Parallel analysis suggests that the number of factors =  3  and the number of components =  3 


Very Simple Structure
Call: vss(x = x, n = n, rotate = rotate, diagonal = diagonal, fm = fm, 
    n.obs = n.obs, plot = plot, title = title, use = use, cor = cor)
VSS complexity 1 achieves a maximimum of 0.82  with  1  factors
VSS complexity 2 achieves a maximimum of 0.9  with  2  factors

The Velicer MAP achieves a minimum of 0.02  with  3  factors 
BIC achieves a minimum of  -447.53  with  3  factors
Sample Size adjusted BIC achieves a minimum of  -41.12  with  7  factors

Statistics by number of factors 
  vss1 vss2   map dof chisq    prob sqresid  fit RMSEA  BIC SABIC complex
1 0.82 0.00 0.041 170   542 1.8e-40    14.1 0.82 0.141 -276   262     1.0
2 0.77 0.90 0.032 151   374 6.8e-21     8.1 0.90 0.117 -353   125     1.2
3 0.56 0.88 0.022 133   192 5.7e-04     5.2 0.93 0.068 -448   -27     1.5
4 0.57 0.88 0.027 116   156 7.9e-03     4.7 0.94 0.062 -402   -35     1.6
5 0.56 0.87 0.032 100   125 4.5e-02     4.0 0.95 0.055 -356   -40     1.7
6 0.49 0.76 0.036  85   102 1.0e-01     3.5 0.96 0.052 -307   -38     2.0
7 0.49 0.74 0.042  71    76 3.2e-01     3.0 0.96 0.039 -266   -41     2.1
8 0.48 0.77 0.048  58    55 5.8e-01     2.5 0.97 0.023 -224   -40     2.1
  eChisq  SRMR eCRMS eBIC
1    690 0.121 0.128 -128
2    279 0.077 0.087 -448
3     82 0.042 0.050 -558
4     65 0.037 0.048 -494
5     46 0.031 0.043 -435
6     32 0.026 0.039 -377
7     21 0.021 0.035 -321
8     12 0.016 0.029 -267

Clustering within reduced factor space

4-6yo US Children

Maximal structure, oblimin rotation

 A loading greater than abs(1) was detected.  Examine the loadings carefully.

Reduced structure, oblimin rotation

Alternative factor retention methods

The estimated weights for the factor scores are probably incorrect.  Try a different factor extraction method.
Parallel analysis suggests that the number of factors =  2  and the number of components =  1 

An ultra-Heywood case was detected.  Examine the results carefully

Very Simple Structure
Call: vss(x = x, n = n, rotate = rotate, diagonal = diagonal, fm = fm, 
    n.obs = n.obs, plot = plot, title = title, use = use, cor = cor)
VSS complexity 1 achieves a maximimum of 0.84  with  1  factors
VSS complexity 2 achieves a maximimum of 0.87  with  2  factors

The Velicer MAP achieves a minimum of 0.02  with  1  factors 
BIC achieves a minimum of  -521.5  with  1  factors
Sample Size adjusted BIC achieves a minimum of  -46.41  with  4  factors

Statistics by number of factors 
  vss1 vss2   map dof chisq    prob sqresid  fit RMSEA  BIC SABIC complex
1 0.84 0.00 0.018 170   298 4.7e-09    11.0 0.84 0.084 -521  16.0     1.0
2 0.62 0.87 0.019 151   242 3.5e-06     8.9 0.87 0.077 -486  -8.1     1.4
3 0.43 0.78 0.022 133   192 5.9e-04     7.8 0.88 0.068 -449 -28.2     1.9
4 0.34 0.67 0.023 116   146 3.1e-02     6.6 0.90 0.055 -413 -46.4     2.2
5 0.33 0.61 0.028 100   128 3.1e-02     5.9 0.91 0.057 -354 -37.8     2.4
6 0.32 0.60 0.033  85   104 8.1e-02     5.2 0.92 0.053 -306 -37.1     2.5
7 0.28 0.53 0.039  71    78 2.7e-01     4.5 0.93 0.042 -264 -39.8     2.6
8 0.31 0.55 0.046  58    57 5.3e-01     4.0 0.94 0.027 -223 -39.6     2.5
  eChisq  SRMR eCRMS eBIC
1    276 0.076 0.081 -544
2    180 0.062 0.069 -547
3    132 0.053 0.063 -509
4     87 0.043 0.055 -472
5     70 0.039 0.053 -412
6     53 0.033 0.050 -357
7     34 0.027 0.044 -308
8     23 0.022 0.040 -256

Clustering within reduced factor space

LS0tCnRpdGxlOiAiUXVpY2sgZGlta2lkIGNoZWNrIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpXZSB3ZXJlIHVzaW5nIHRoZSB3cm9uZyAibWF4aW1hbCIgbW9kZWwhIFRoaXMgaXMgYSBxdWljayBub3RlYm9vayB0byBjaGVjayB3aGF0IHdlIHNlZSB3aGVuIHdlIHVzZSB0aGUgcmlnaHQgbWF4aW1hbCBtb2RlbCB0byBkZXRlcm1pbmUgaG93IG1hbnkgZmFjdG9ycyB0byBleHRyYWN0LgoKYGBge3IgZ2xvYmFsX29wdGlvbnMsIGluY2x1ZGUgPSBGfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1GLCB3YXJuaW5nPUYsIGNhY2hlPUYsIG1lc3NhZ2U9RikKYGBgCgpgYGB7ciBsaWJyYXJpZXMsIGluY2x1ZGUgPSBGfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsdWJyaWRhdGUpCmxpYnJhcnkocHN5Y2gpCmxpYnJhcnkocm1zKQpsaWJyYXJ5KGRlbmRleHRlbmQpCmBgYAoKYGBge3IgZnVuY3Rpb25zLCBpbmNsdWRlID0gRn0KIyBtYWtlIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIGtpZCBkYXRhIGZyb20gVVMKY2xlYW5fa2lkX3VzX2Z1biA8LSBmdW5jdGlvbihkZiwgbl90cmlhbHMsIGFnZV9sb3dlciwgYWdlX3VwcGVyKSB7CiAgCiAgaWYoISgiYWdlIiAlaW4lIG5hbWVzKGRmKSkpIHsKICAgIGRmIDwtIGRmICU+JQogICAgICBtdXRhdGUoYWdlID0gTkEpCiAgfQogIAogIGRmX2NsZWFuIDwtIGRmICU+JQogICAgbXV0YXRlKGRvYiA9IHBhcnNlX2RhdGV0aW1lKGRhdGVPZkJpcnRoLCAiJW0vJWQvJXkiKSwKICAgICAgICAgICBkb3QgPSBwYXJzZV9kYXRldGltZShnc3ViKCIyMDE3IiwgIjE3IiwgZGF0ZU9mVGVzdCksICIlbS8lZC8leSIpLAogICAgICAgICAgIGFnZSA9IGlmZWxzZShpcy5uYShhZ2UpLAogICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbChzdGFydCA9IGRvYiwgZW5kID0gZG90KSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24obnVtID0gMSwgdW5pdHMgPSAieWVhcnMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYWdlKSkgJT4lCiAgICBmaWx0ZXIodHJpYWxOdW0gPD0gbl90cmlhbHMpICU+JQogICAgZmlsdGVyKChhZ2UgPj0gYWdlX2xvd2VyICYgYWdlIDwgYWdlX3VwcGVyICsgMSkgfCAjIG91dHNpZGUgb2YgYWdlIHJhbmdlCiAgICAgICAgICAgICBpcy5uYShhZ2UpLCAjIG1pc3NpbmcgYWdlCiAgICAgICAgICAgKHJ0ID49IDI1MCB8IGlzLm5hKHJ0KSksICMgZmFzdCBSVHMKICAgICAgICAgICByZXNwb25zZSAlaW4lIGMoIm5vIiwgImtpbmRhIiwgInllcyIpLCAjIHNraXBwZWQgdHJpYWxzCiAgICAgICAgICAgIWlzLm5hKHN1YmlkKSwgIWlzLm5hKGNhcGFjaXR5KSkgJT4lCiAgICBtdXRhdGUocmVzcG9uc2VOdW0gPSByZWNvZGUocmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtpbmRhIiA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWVzIiA9IDEpLAogICAgICAgICAgIHJlc3BvbnNlTnVtID0gYXMubnVtZXJpYyhyZXNwb25zZU51bSkpICU+JQogICAgZGlzdGluY3Qoc3ViaWQsIGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICBtdXRhdGUoY2FwYWNpdHkgPSByZWNvZGUoY2FwYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnNjaW91cyIgPSAiYXdhcmVuZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW1iYXJyYXNzZWQiID0gImVtYmFycmFzc21lbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJndWlsdCIgPSAiZ3VpbHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXBweSIgPSAiaGFwcGluZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG92ZSIgPSAibG92ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhaW4iID0gInBhaW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmlkZSIgPSAicHJpZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZXNzZWQiID0gInNhZG5lc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZWFyIiA9ICJmZWFyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmF1c2VhdGVkIiA9ICJuYXVzZWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aXJlZCIgPSAiZmF0aWd1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYXNvbmluZyIgPSAiZmlndXJpbmdfb3V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5ncnkiID0gImFuZ2VyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHVuZ3J5IiA9ICJodW5nZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNyZXNwZWN0ZWQiID0gImh1cnRfZmVlbGluZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaG9pY2VzIiA9ICJjaG9pY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZW1lbWJlcmluZyIgPSAibWVtb3J5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVtcGVyYXR1cmUiID0gInRlbXBlcmF0dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVwdGgiID0gImRlcHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2RvcnMiID0gInNtZWxsIikpICU+JQogICAgc3ByZWFkKGNhcGFjaXR5LCByZXNwb25zZU51bSkgJT4lCiAgICByZW1vdmVfcm93bmFtZXMoKSAlPiUKICAgIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKQogIAogIHJldHVybihkZl9jbGVhbikKICAKfQoKIyBtYWtlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBtYXggbl9mYWN0b3JzLCBnaXZlbiBuX29icyB2YXJpYWJsZXMKbWF4X2ZhY3RfZnVuIDwtIGZ1bmN0aW9uKHApIHsKICAKICBzX21vbWVudHMgPC0gZnVuY3Rpb24ocCkge3AqKHArMSkvMn0KICBwYXJhbV9lc3QgPC0gZnVuY3Rpb24ocCwgaykge3AqayArIHAgLSAoayooay0xKS8yKX0KICBjaGVja19vayA8LSBmdW5jdGlvbihwLCBrKSB7CiAgICBhIDwtIChwLWspXjIKICAgIGIgPC0gcCtrCiAgICByZXR1cm4oaWZlbHNlKGE+YiwgVFJVRSwgRkFMU0UpKQogIH0KICAKICBkZl9jaGVjayA8LSBkYXRhLmZyYW1lKCkKICBmb3IoaSBpbiAxOnApewogICAgZGZfY2hlY2tbaSwiY2hlY2siXSA8LSBjaGVja19vayhwLGkpCiAgfQogIAogIG1heCA8LSBkZl9jaGVjayAlPiUgZmlsdGVyKGNoZWNrKSAlPiUgbnJvdygpCiAgcmV0dXJuKG1heCkKICAKfQoKIyBtYWtlIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBmYWN0b3IgcmV0ZW50aW9uIGNyaXRlcmlhCnJldGVuX2ZhY3RfZnVuIDwtIGZ1bmN0aW9uKGRmLCByb3QpIHsKICAKICBtYXhfZWZhIDwtIGZhKGRmLCBuZmFjdG9ycyA9IG1heF9mYWN0X2Z1bihuY29sKGRmKSksIHJvdGF0ZSA9ICJub25lIikKICBtYXhfdmFjYyA8LSBtYXhfZWZhJFZhY2NvdW50ZWQgJT4lCiAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICByb3duYW1lc190b19jb2x1bW4oInN0YXQiKSAlPiUKICAgIGdhdGhlcihmYWN0b3IsIHZhbHVlLCAtc3RhdCkgJT4lCiAgICBzcHJlYWQoc3RhdCwgdmFsdWUpICU+JQogICAgZmlsdGVyKGBTUyBsb2FkaW5nc2AgPiAxLCBgUHJvcG9ydGlvbiBFeHBsYWluZWRgID4gMC4wNSkKICBuX3JldGVuMSA8LSBucm93KG1heF92YWNjKQogIAogIHJldGVuX2VmYSA8LSBmYShkZiwgbmZhY3RvcnMgPSBuX3JldGVuMSwgcm90YXRlID0gcm90KQogIHJldGVuX2xvYWRpbmdzIDwtIHJldGVuX2VmYSRsb2FkaW5nc1tdICU+JQogICAgZGF0YS5mcmFtZSgpICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKCJtYyIpICU+JQogICAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLW1jKSAlPiUKICAgIGdyb3VwX2J5KG1jKSAlPiUKICAgIHRvcF9uKDEsIGFicyhsb2FkaW5nKSkgJT4lCiAgICB1bmdyb3VwKCkKICBuX3JldGVuMiA8LSByZXRlbl9sb2FkaW5ncyAlPiUKICAgIGNvdW50KGZhY3RvcikgJT4lCiAgICBucm93KCkKICAgIAogIHJldHVybihuX3JldGVuMikKCn0KCiMgbWFrZSBmdW5jdGlvbiB0byBwbG90IGhlYXRtYXAgb2YgZmFjdG9yIGxvYWRpbmdzCmhlYXRtYXBfZnVuIDwtIGZ1bmN0aW9uKGRmLCBuX2ZhY3RvcnMsIHJvdCl7CiAgCiAgZWZhIDwtIGZhKGRmLCBuZmFjdG9ycyA9IG5fZmFjdG9ycywgcm90YXRlID0gcm90KQogIGxvYWRpbmdzIDwtIGVmYSRsb2FkaW5nc1tdICU+JQogICAgZmEuc29ydCgpICU+JQogICAgZGF0YS5mcmFtZSgpICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKCJtYyIpICU+JQogICAgcm93bmFtZXNfdG9fY29sdW1uKCJvcmRlciIpICU+JQogICAgbXV0YXRlKG9yZGVyID0gYXMubnVtZXJpYyhvcmRlcikpICU+JQogICAgZ2F0aGVyKGZhY3RvciwgbG9hZGluZywgLWMobWMsIG9yZGVyKSkKICAKICBwbG90IDwtIGdncGxvdChsb2FkaW5ncywKICAgICAgICAgICAgICAgICBhZXMoeCA9IGZhY3RvciwgeSA9IHJlb3JkZXIobWMsIGRlc2Mob3JkZXIpKSwgZmlsbCA9IGxvYWRpbmcsIAogICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiAgICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgICBnZW9tX3RleHQoc2l6ZSA9IDMpICsKICAgIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogICAgc2NhbGVfZmlsbF9kaXN0aWxsZXIobGltaXRzID0gYygtMS4wMiwgMS4wMiksIHBhbGV0dGUgPSAiUmRZbEJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gMTUpKSArCiAgICB0aGVtZV9taW5pbWFsKCkKICAKICByZXR1cm4ocGxvdCkKICAKfQpgYGAKCmBgYHtyIGRhdGEsIGluY2x1ZGUgPSBGLCB3YXJuaW5nID0gRkFMU0V9CiMgVVMgNy05eW8sIDIgY2hhcmFjdGVycwpkX3VzNzlfMmNoYXIgPC0gcmVhZC5jc3YoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9EaW1raWQvZGlta2lkL2RhdGEvY2hpbGRyZW4vcnVuLTAxXzIwMTctMDctMjRfYW5vbnltaXplZC5jc3YiKSAlPiUgY2xlYW5fa2lkX3VzX2Z1bihuX3RyaWFscyA9IDQwLCBhZ2VfbG93ZXIgPSA3LCBhZ2VfdXBwZXIgPSA5KQoKIyBVUyA3LTl5bywgOSBjaGFyYWN0ZXJzCmRfdXM3OV85Y2hhciA8LSByZWFkLmNzdigiL1VzZXJzL2t3ZWlzbWFuL0RvY3VtZW50cy9SZXNlYXJjaCAoU3RhbmZvcmQpL1Byb2plY3RzL0RpbWtpZC9kaW1raWQvZGF0YS9jaGlsZHJlbi9ydW4tMDJfMjAxNy0wOC0wOF9hbm9ueW1pemVkLmNzdiIpICU+JSBjbGVhbl9raWRfdXNfZnVuKG5fdHJpYWxzID0gMjAsIGFnZV9sb3dlciA9IDcsIGFnZV91cHBlciA9IDkpCgojIFVTIDQtNnlvLCA5IGNoYXJhY3RlcnMKZF91czQ2XzljaGFyIDwtIHJlYWQuY3N2KCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvRGlta2lkL2RpbWtpZC9kYXRhL2NoaWxkcmVuL3J1bi0wM18yMDE3LTA4LTIxX2Fub255bWl6ZWQuY3N2IikgJT4lIGNsZWFuX2tpZF91c19mdW4obl90cmlhbHMgPSAyMCwgYWdlX2xvd2VyID0gNCwgYWdlX3VwcGVyID0gNikKYGBgCgojIDctOXlvIFVTIENoaWxkcmVuLCAyIGNoYXJhY3RlcnMKCiMjIE1heGltYWwgc3RydWN0dXJlLCBvYmxpbWluIHJvdGF0aW9uCgpgYGB7ciwgZmlnLndpZHRoID0gNywgZmlnLmFzcCA9IDAuNX0KaGVhdG1hcF9mdW4oZF91czc5XzJjaGFyLCBtYXhfZmFjdF9mdW4obmNvbChkX3VzNzlfMmNoYXIpKSwgIm9ibGltaW4iKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3IgbG9hZGluZ3MsIG1heGltYWwgc29sdXRpb246IDctOXlvIFVTIENoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjIgY2hhcmFjdGVycywgNDAgY2FwYWNpdGllcywgb2JsaW1pbiByb3RhdGlvbiIsCiAgICAgICB4ID0gIiIsIHkgPSAiIiwgZmlsbCA9ICIiKQpgYGAKCiMjIFJlZHVjZWQgc3RydWN0dXJlLCBvYmxpbWluIHJvdGF0aW9uCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNX0KaGVhdG1hcF9mdW4oZF91czc5XzJjaGFyLCByZXRlbl9mYWN0X2Z1bihkX3VzNzlfMmNoYXIsICJvYmxpbWluIiksICJvYmxpbWluIikgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIGxvYWRpbmdzLCBhZnRlciByZXRlbnRpb246IDctOXlvIFVTIENoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjIgY2hhcmFjdGVycywgNDAgY2FwYWNpdGllcywgb2JsaW1pbiByb3RhdGlvbiIsCiAgICAgICB4ID0gIiIsIHkgPSAiIiwgZmlsbCA9ICIiKQpgYGAKCiMjIEFsdGVybmF0aXZlIGZhY3RvciByZXRlbnRpb24gbWV0aG9kcwoKYGBge3J9CmZhLnBhcmFsbGVsKGRfdXM3OV8yY2hhcikKYGBgCgpgYGB7cn0KVlNTKGRfdXM3OV8yY2hhcikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEsIGluY2x1ZGUgPSBGfQpoZWF0bWFwX2Z1bihkX3VzNzlfMmNoYXIsIDUsICJvYmxpbWluIikgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yIGxvYWRpbmdzLCBCSUMgcmV0ZW50aW9uOiA3LTl5byBVUyBDaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICIyIGNoYXJhY3RlcnMsIDQwIGNhcGFjaXRpZXMsIG9ibGltaW4gcm90YXRpb24iLAogICAgICAgeCA9ICIiLCB5ID0gIiIsIGZpbGwgPSAiIikKYGBgCgojIyBDbHVzdGVyaW5nIHdpdGhpbiByZWR1Y2VkIGZhY3RvciBzcGFjZQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQojIHBhcihtYXIgPSBjKDEsIDEsIDEsIDYpKQpjbHVzdCA8LSBmYShkX3VzNzlfMmNoYXIsIAogICAgICAgICAgICByZXRlbl9mYWN0X2Z1bihkX3VzNzlfMmNoYXIsICJvYmxpbWluIiksICJvYmxpbWluIikkbG9hZGluZ3NbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgZGlzdCgpICU+JQogIGhjbHVzdCgpCgpjbHVzdCAlPiUKICBhcy5kZW5kcm9ncmFtKCkgJT4lCiAgc2V0KCJsYWJlbHNfY29sIiwgdmFsdWUgPSBjKCIjYTZjZWUzIiwgIiMxZjc4YjQiLCAiI2IyZGY4YSIsICIjMzNhMDJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNmYjlhOTkiLCAiI2UzMWExYyIsICIjZmRiZjZmIiwgIiNmZjdmMDAiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNjYWIyZDYiLCAiIzZhM2Q5YSIsICIjZmZmZjk5IiwgIiNiMTU5MjgiKSwgCiAgICAgIGsgPSA2KSAlPiUKICBzZXQoImJyYW5jaGVzX2x3ZCIsIDAuNSkgJT4lCiAgIyBzZXQoImxlYXZlc19wY2giLCAxNikgJT4lCiAgIyBwbG90KGhvcml6ID0gVCkKICBhcy5nZ2RlbmQoKSAlPiUKICBnZ3Bsb3QoaG9yaXogPSBGKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMiwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKC0wLjcsIG1heChjbHVzdCRoZWlnaHQpKSkgKwogIGxhYnModGl0bGUgPSAiSGllcmFyY2hpY2FsIGNsdXN0ZXJpbmcgd2l0aGluIHJlZHVjZWQgZmFjdG9yIHNwYWNlOiA3LTl5byBVUyBDaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICIyIGNoYXJhY3RlcnMsIDQwIGNhcGFjaXRpZXMsIG9ibGltaW4gcm90YXRpb24iKQoKcm0oY2x1c3QpCmBgYAoKCiMgNy05eW8gVVMgQ2hpbGRyZW4sIDkgY2hhcmFjdGVycwoKIyMgTWF4aW1hbCBzdHJ1Y3R1cmUsIG9ibGltaW4gcm90YXRpb24KCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KaGVhdG1hcF9mdW4oZF91czc5XzljaGFyLCBtYXhfZmFjdF9mdW4obmNvbChkX3VzNzlfOWNoYXIpKSwgIm9ibGltaW4iKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3IgbG9hZGluZ3MsIG1heGltYWwgc29sdXRpb246IDctOXlvIFVTIENoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcywgb2JsaW1pbiByb3RhdGlvbiIsCiAgICAgICB4ID0gIiIsIHkgPSAiIiwgZmlsbCA9ICIiKQpgYGAKCiMjIFJlZHVjZWQgc3RydWN0dXJlLCBvYmxpbWluIHJvdGF0aW9uCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmhlYXRtYXBfZnVuKGRfdXM3OV85Y2hhciwgcmV0ZW5fZmFjdF9mdW4oZF91czc5XzljaGFyLCAib2JsaW1pbiIpLCAib2JsaW1pbiIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBsb2FkaW5ncywgYWZ0ZXIgcmV0ZW50aW9uOiA3LTl5byBVUyBDaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMsIG9ibGltaW4gcm90YXRpb24iLAogICAgICAgeCA9ICIiLCB5ID0gIiIsIGZpbGwgPSAiIikKYGBgCgoKIyMgQWx0ZXJuYXRpdmUgZmFjdG9yIHJldGVudGlvbiBtZXRob2RzCgpgYGB7cn0KZmEucGFyYWxsZWwoZF91czc5XzljaGFyKQpgYGAKCmBgYHtyfQpWU1MoZF91czc5XzljaGFyKQpgYGAKCgojIyBDbHVzdGVyaW5nIHdpdGhpbiByZWR1Y2VkIGZhY3RvciBzcGFjZQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQojIHBhcihtYXIgPSBjKDEsIDEsIDEsIDYpKQpjbHVzdCA8LSBmYShkX3VzNzlfOWNoYXIsIAogICAgICAgICAgICByZXRlbl9mYWN0X2Z1bihkX3VzNzlfOWNoYXIsICJvYmxpbWluIiksICJvYmxpbWluIikkbG9hZGluZ3NbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgZGlzdCgpICU+JQogIGhjbHVzdCgpCgpjbHVzdCAlPiUKICBhcy5kZW5kcm9ncmFtKCkgJT4lCiAgc2V0KCJsYWJlbHNfY29sIiwgdmFsdWUgPSBjKCIjYTZjZWUzIiwgIiMxZjc4YjQiLCAiI2IyZGY4YSIsICIjMzNhMDJjIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNmYjlhOTkiLCAiI2UzMWExYyIsICIjZmRiZjZmIiwgIiNmZjdmMDAiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiNjYWIyZDYiLCAiIzZhM2Q5YSIsICIjZmZmZjk5IiwgIiNiMTU5MjgiKSwgCiAgICAgIGsgPSA0KSAlPiUKICBzZXQoImJyYW5jaGVzX2x3ZCIsIDAuNSkgJT4lCiAgIyBzZXQoImxlYXZlc19wY2giLCAxNikgJT4lCiAgIyBwbG90KGhvcml6ID0gVCkKICBhcy5nZ2RlbmQoKSAlPiUKICBnZ3Bsb3QoaG9yaXogPSBGKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMiwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKC0wLjcsIG1heChjbHVzdCRoZWlnaHQpKSkgKwogIGxhYnModGl0bGUgPSAiSGllcmFyY2hpY2FsIGNsdXN0ZXJpbmcgd2l0aGluIHJlZHVjZWQgZmFjdG9yIHNwYWNlOiA3LTl5byBVUyBDaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMsIG9ibGltaW4gcm90YXRpb24iKQoKcm0oY2x1c3QpCmBgYAoKIyA0LTZ5byBVUyBDaGlsZHJlbgoKIyMgTWF4aW1hbCBzdHJ1Y3R1cmUsIG9ibGltaW4gcm90YXRpb24KCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KaGVhdG1hcF9mdW4oZF91czQ2XzljaGFyLCBtYXhfZmFjdF9mdW4obmNvbChkX3VzNDZfOWNoYXIpKSwgIm9ibGltaW4iKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3IgbG9hZGluZ3MsIG1heGltYWwgc29sdXRpb246IDQtNnlvIFVTIENoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcywgb2JsaW1pbiByb3RhdGlvbiIsCiAgICAgICB4ID0gIiIsIHkgPSAiIiwgZmlsbCA9ICIiKQpgYGAKCiMjIFJlZHVjZWQgc3RydWN0dXJlLCBvYmxpbWluIHJvdGF0aW9uCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmhlYXRtYXBfZnVuKGRfdXM0Nl85Y2hhciwgcmV0ZW5fZmFjdF9mdW4oZF91czQ2XzljaGFyLCAib2JsaW1pbiIpLCAib2JsaW1pbiIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvciBsb2FkaW5ncywgYWZ0ZXIgcmV0ZW50aW9uOiA0LTZ5byBVUyBDaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMsIG9ibGltaW4gcm90YXRpb24iLAogICAgICAgeCA9ICIiLCB5ID0gIiIsIGZpbGwgPSAiIikKYGBgCgoKIyMgQWx0ZXJuYXRpdmUgZmFjdG9yIHJldGVudGlvbiBtZXRob2RzCgpgYGB7cn0KZmEucGFyYWxsZWwoZF91czQ2XzljaGFyKQpgYGAKCmBgYHtyfQpWU1MoZF91czQ2XzljaGFyKQpgYGAKCiMjIENsdXN0ZXJpbmcgd2l0aGluIHJlZHVjZWQgZmFjdG9yIHNwYWNlCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CiMgcGFyKG1hciA9IGMoMSwgMSwgMSwgNikpCmNsdXN0IDwtIGZhKGRfdXM0Nl85Y2hhciwgCiAgICAgICAgICAgIHJldGVuX2ZhY3RfZnVuKGRfdXM0Nl85Y2hhciwgIm9ibGltaW4iKSwgIm9ibGltaW4iKSRsb2FkaW5nc1tdICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICBkaXN0KCkgJT4lCiAgaGNsdXN0KCkKCmNsdXN0ICU+JQogIGFzLmRlbmRyb2dyYW0oKSAlPiUKICBzZXQoImxhYmVsc19jb2wiLCAKICAgICAgIyB2YWx1ZSA9IGNvbG9yUmFtcFBhbGV0dGUoc29sYXJpemVkX3BhbCgpKDgpKSgyMCksCiAgICAgIHZhbHVlID0gYygiI2E2Y2VlMyIsICIjMWY3OGI0IiwgIiNiMmRmOGEiLCAiIzMzYTAyYyIsCiAgICAgICAgICAgICAgICAiI2ZiOWE5OSIsICIjZTMxYTFjIiwgIiNmZGJmNmYiLCAiI2ZmN2YwMCIsCiAgICAgICAgICAgICAgICAiI2NhYjJkNiIsICIjNmEzZDlhIiwgIiNmZmZmOTkiLCAiI2IxNTkyOCIpLAogICAgICBrID0gNikgJT4lCiAgc2V0KCJicmFuY2hlc19sd2QiLCAwLjUpICU+JQogICMgc2V0KCJsZWF2ZXNfcGNoIiwgMTYpICU+JQogICMgcGxvdChob3JpeiA9IFQpCiAgYXMuZ2dkZW5kKCkgJT4lCiAgZ2dwbG90KGhvcml6ID0gRikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDIsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygtMC43LCBtYXgoY2x1c3QkaGVpZ2h0KSkpICsKICBsYWJzKHRpdGxlID0gIkhpZXJhcmNoaWNhbCBjbHVzdGVyaW5nIHdpdGhpbiByZWR1Y2VkIGZhY3RvciBzcGFjZTogNC02eW8gVVMgQ2hpbGRyZW4iLAogICAgICAgc3VidGl0bGUgPSAiOSBjaGFyYWN0ZXJzLCAyMCBjYXBhY2l0aWVzLCBvYmxpbWluIHJvdGF0aW9uIikKCnJtKGNsdXN0KQpgYGAKCg==